// 向量运算 点线关系
// 测试链接 ：http://poj.org/problem?id=2318
// 相关帖子 ：https://www.cnblogs.com/dx123/p/17153468.html
// 相关帖子 ：https://oi-wiki.org/math/linear-algebra/product/
// 提交以下的code，可以直接通过

#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>

using namespace std;

const int MAXN = 5010;
struct Point
{
    long long x, y;
}a[MAXN], b[MAXN], p;
int n, m, ans[MAXN];

long long cross(Point& a, Point& b, Point& c)
{
    return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
}

int bs(Point& p)
{
    int l = 0, r = n, ans = -1, mid;
    while(l <= r)
    {
        mid = (l + r) >> 1;
        if(cross(b[mid], a[mid], p) > 0)
        {
            // p 在 ab 直线左侧
            ans = mid;
            r = mid - 1;
        }
        else l = mid + 1;
    }
    return ans;
}

int main()
{
    long long x1, y1, x2, y2, u, l;
    bool num1 = 1;
    while(~scanf("%d", &n) && n)
    {
        scanf("%d%lld%lld%lld%lld", &m, &x1, &y1, &x2, &y2);
        // 左边界
        a[0].x = x1, a[0].y = y1;
        b[0].x = x1, b[0].y = y2;
        // 纸板端点
        for(int i = 1; i <= n; ++i)
        {
            scanf("%lld%lld", &u, &l);
            a[i].x = u, a[i].y = y1;
            b[i].x = l, b[i].y = y2;
        }
        memset(ans, 0, sizeof ans);
        while(m--)
        {
            scanf("%lld%lld", &p.x, &p.y); // 玩具坐标
            ++ans[bs(p)]; // 二分答案
        }
        num1 ? num1 = 0 : puts(""); // 第一行不输出空行
        for(int i = 0; i <= n; ++i) printf("%d: %d\n", i, ans[i]);
    }

    return 0;
}